package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.system.domain.MeterData;

/**
 * 电表数据Service接口
 * 
 * @author ruoyi
 * @date 2023-05-20
 */
public interface IMeterDataService 
{
    /**
     * 查询电表数据
     * 
     * @param id 电表数据主键
     * @return 电表数据
     */
    public MeterData selectMeterDataById(Long id);

    /**
     * 查询电表数据列表
     * 
     * @param meterData 电表数据
     * @return 电表数据集合
     */
    public List<MeterData> selectMeterDataList(MeterData meterData);

    /**
     * 新增电表数据
     * 
     * @param meterData 电表数据
     * @return 结果
     */
    public int insertMeterData(MeterData meterData);

    /**
     * 修改电表数据
     * 
     * @param meterData 电表数据
     * @return 结果
     */
    public int updateMeterData(MeterData meterData);

    /**
     * 批量删除电表数据
     * 
     * @param ids 需要删除的电表数据主键集合
     * @return 结果
     */
    public int deleteMeterDataByIds(String ids);

    /**
     * 删除电表数据信息
     * 
     * @param id 电表数据主键
     * @return 结果
     */
    public int deleteMeterDataById(Long id);
    
    /**
     * 获取指定设备最后一条数据
     * 
     * @param deviceId 设备ID
     * @return 电表数据
     */
    public MeterData getLastDataByDeviceId(String deviceId);
    
    /**
     * 按日统计用电量
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计数据
     */
    public List<Map<String, Object>> statisticsByDay(String startDate, String endDate);

    /**
     * 按周统计用电量
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计数据
     */
    public List<Map<String, Object>> statisticsByWeek(String startDate, String endDate);

    /**
     * 按月统计用电量
     * 
     * @param yearMonth 年月（格式：yyyy-MM）
     * @return 统计数据
     */
    public List<Map<String, Object>> statisticsByMonth(String yearMonth);

    /**
     * 按年统计用电量
     * 
     * @param startYear 开始年份
     * @param endYear 结束年份
     * @return 统计数据
     */
    public List<Map<String, Object>> statisticsByYear(String startYear, String endYear);
    
    /**
     * 按小时统计用电量
     * 
     * @param date 日期（格式：yyyy-MM-dd）
     * @return 统计数据
     */
    public List<Map<String, Object>> statisticsByHour(String date);
}